package com.kaifamiao.hashmap;

import java.util.HashMap;
import java.util.Map;

/**
 * 1、HashMap 实现了 Map 接口
 * 2、HashMap 内部采用 哈希表 来存储 映射项
 * 3、从 JDK 1.8 开始 HashMap 内部采用 数组 + 链表 + 树 来实现 哈希表
 */
public class HashMapTest2 {

	public static void main(String[] args) {
		
		Map<Product,Integer> map = new HashMap<>();
		
		Product p1 = new Product( 1 , "老干妈" , 1200 , 90 , "瓶" );
		
		System.out.println( "- - - 1 - - - - - - - - -" );
		
		map.put( p1 ,  10 );
		
		System.out.println( "- - - 2 - - - - - - - - -" );
		
		// 判断指定的 key 是否存在于 HashMap 中
		// 1、首先根据key.hashCode()计算这个key所对应的映射项的位置
		// 2、若该位置没有映射项，则认为 该 key 在 HashMap 中不存在
		System.out.println( map.containsKey( p1 ) );
		
		System.out.println( "- - - 3 - - - - - - - - -" );
		
		Product p2 = new Product( 1 , "老干妈" , 1200 , 90 , "瓶" );
		
		// 3、若该位置有映射项(entry)，则用 key == entry.key 判断是否相等，若相等则返回 true
		// 3、若该位置有映射项(entry)，但 key == entry.key 返回 false 则再调用 equals 进行比较
		//    如果 equals 方法返回 true 则表示该 key 对应的映射项是存在的，否则认为不存在
		System.out.println( map.containsKey( p2 ) );
		
		System.out.println( "- - - 4 - - - - - - - - -" );
		
		map.remove( p2 );
		
		System.out.println( "- - - 5 - - - - - - - - -" );
		
		System.out.println( map );

	}

}
